#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名：16-paramiko.py

'''
如果服务器上没有安装，yum安装
yum install  python-paramiko -y

ssh通过密钥连接
1 在客户机上（即执行py脚本的机器）上
  ssh - keygen ，一路回车得到
  cd .ssh 中  id_rsa 和id_rsa.pub

2 将公钥考到对方机器的用户目录下，并将内容加入复制到~ / .ssh / authorized_keys中
（操作命令：  # cat id_dsa.pub >> ~/.ssh/authorized_keys）
'''

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='120.92.84.249', port=22, username='root', pkey=private_key)

# 执行命令
command1 = 'df'

stdin, stdout, stderr = ssh.exec_command(command1)
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()




''' # == == 通过密码连接，很少用== =
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='120.92.84.249', port=22, username='root', password='xxx')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()'''


== = 用密钥 == =

'''
 sshport = 22
 username="root"
 pkey='/root/.ssh/id_rsa'
 key=paramiko.RSAKey.from_private_key_file(pkey)

 s=paramiko.SSHClient()
 s.load_system_host_keys()
 s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 s.connect(ip,sshport,username,pkey=key,allow_agent=True)

 command_backup="sh /usr/fsinit/fs_optinits/dbbackup_one.sh %s %s" % (plname,zoneid)
 stdin,stdout,sterr=s.exec_command(command_backup)
 print stdout.read()
 s.close()
 '''

